2011年09月21日
川俣晶の縁側ソフトウェア技術雑記 total 3222 count

Windows Phoneのクリップボードは読み出せない

Written By: 川俣 晶連絡先

「Windows Phoneプログラミングは思ったよりもハードルが高いことが分かってきた」

「どのへんが高いの?」

「従来までのWindowsプログラミングの常識が通用しないカ所が多くある」

「なぜ通用しないの?」

「リソースの効率利用という側面もあるが、安全性という面も大きそうだ」

「安全性ってどういうこと?」

「たとえばクリップボード」

「それがどうした?」

「以下のコードは通る。通って、クリップボードに文字列が入る」

  • System.Windows.Clipboard.SetText("……");

「うん」

「でも以下のコードは通らない。常に例外になる」

  • textBox1.Text = System.Windows.Clipboard.GetText();

「代替APIがあるのかい?」

「無い」

「なぜセットできるのに、ゲットできないの? それじゃ意味が無いじゃん」

「そうじゃない。仮想キーボードからの貼り付け機能は有効なので、セットされたデータは貼り付けられる」

「どうして、そんな変な制約があるの?」

「おそらく、クリップボードを監視して情報を抜き取る不正なプログラムがあるからだろう」

「でもおかしいよ。テキストじゃないデータはどうするんだよ。たとえば、ワードの書式付きのテキストはどうするんだよ。任意のデータを交換する場合は、アプリがクリップボードのデータを取得できないと無理じゃん」

「実際にやってみた」

「それで?」

「文字列だけ移動した。書式は貼り付けられなかった」

「ぎゃふん」

問題は…… §

「問題なのは、一般ユーザーから見た時、制約の意味が見えにくいことだ。なぜこれほど基本的なことができないんだ、とお客様が怒ったときに対処しなければならないが、その手間は誰の負担なのか」

「誰の負担なの?」

「順当に行けば、アプリを売るメーカーのサポートの負担になるが、別にアプリの開発者が決めた制約でも無いし、丸損だな」

「なぜ、そんな丸損が発生するんだろう」

「犯罪者を摘発するどころか、むしろ守ろうとするネットの体質とか、正義の味方を装いたいために過剰に厳しいセキュリティを要求する中二病患者がうようよいるからな。すっかり、『客を見たら泥棒と思え』という世界になってしまった」

「人と人は信頼し合えないの?」

「現状では無理だろう。たとえば虚偽の連絡先を記載することを推奨するような人までいるのに、相手をどうやって信じられる? 名乗って連絡先を示したとしても、それが事実であるかまるで分からないんだぞ」

「じゃあ、マイクロソフトを悪者扱いするのは?」

「そういう問題じゃ無い。他のメーカーが作ってもそうなるだろうさ。安全に留意するならね」